Meu objetivo com esse projeto é entender o padrão de consumo de música em relação aos artistas mais buscados no site de e-commerce da Universal Music Group. Mais do que isso, analisar a popularidade dos cantores e das bandas em uma das maiores redes sociais do mundo especialmente em quesito de campanhas publicitárias orgânicas, o Instagram.
Para esse projeto usei três bases de dados diferentes. A primeira foi
adquirida a partir do Deezer API, os dados foram puxados em R e o script
se encontra na pasta “scripts” no repositório GitHub. Essa base mostra
que para cada artista existem outros 20 que costumam ser populares entre
os mesmos ouvintes. O formato do arquivo é CSV e o nome dentro do
repositório é artistas_relacionados.csv
A segunda base chama-se insta.xlsx e mosta o número de seguidores de
cada um dos artistas principais da amostra. Cada linha equivale a uma
amostra, sendo ela um dos top 40 artistas mais buscados na Universal
Music Store. Alguns valores estão nulos pois alguns já faleceram e mesmo
que possuam a conta na rede, a Universal Music Group, por questão ética,
não investe em campanhas de e-commerce desses artistas portanto não faz
sentido os manter na análise. Esses valores foram imputados manualmente
por mim mesma em uma planilha excel já que não consegui baixar os
valores através do Instagram API.
A última base contém valores de ouvintes mensais de cada artista e
gênero musical predominante de cada um deles. As bases de dados brutas
estão em formato .xlsx, os dados de gênero foram retornados a partir de
IA (e revisados por mim conforme o catálogo da UMG) e os de ouvintes
mensais foram pesquisados manualmente no Spotify.
Apesar das fontes de ouvintes mensais e de artistas correlacionados serem diferentes isso não afeta o resultado final uma vez que as duas bases de dados são suficientemente grandes para o trabalho não ficar enviesado e os dados não são comparados entre si, muito menos em valor absoluto. A proporção de ouvintes mensais é comparada em relação à propria base e artistas correlacionados nem correspondem a valores numéricos.
O problema incial foi que os dados não estavam no formato correto de data frame uma vez que a primeira linha continha todos os principais artistas e as linhas seguintes continham as informações não numéricas conforme a coluna do artista correspondente. Ou seja, cada coluna represetava uma amostra, e não cada linha como deveria ser. Portanto não era possível adicionar dados numéricos já que em cada coluna só se pode ser um tipo de dado. Além disso, o programa estava reconhecendo como se o nome de cada coluna fosse o imput do primeiro artista e isso estava distorcendo as reais dimensões do dataframe. Por isso o col_names = FALSE
dados <- read_csv("artistas_relacionados.csv", col_names = FALSE)
## Rows: 21 Columns: 40
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (40): X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, ...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
| X1 | X2 | X3 | X4 | X5 | X6 | X7 | X8 | X9 | X10 | X11 | X12 | X13 | X14 | X15 | X16 | X17 | X18 | X19 | X20 | X21 | X22 | X23 | X24 | X25 | X26 | X27 | X28 | X29 | X30 | X31 | X32 | X33 | X34 | X35 | X36 | X37 | X38 | X39 | X40 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Anitta | Ariana Grande | Billie Eilish | BLACKPINK | Bob Marley & The Wailers | BTS | Camila Cabello | Carol Biazin | Charlie Brown Jr. | Chappell Roan | Cazuza | Demi Lovato | Doechii | DUDA BEAT | Engenheiros do Hawaii | Gracie Abrams | Guns N’ Roses | Imagine Dragons | Jão | Justin Bieber | Katy Perry | Lady Gaga | Maria Bethânia | Metallica | Niall Horan | Olivia Rodrigo | Queen | RBD | Rihanna | Rita Lee | Sabrina Carpenter | Selena Gomez | Shawn Mendes | Taylor Swift | The Beatles | The Rolling Stones | The Weeknd | U2 | Zeca Pagodinho | Radiohead |
| Lexa | Sabrina Carpenter | Lana Del Rey | JENNIE | Alpha Blondy | Agust D | Selena Gomez | DAY LIMNS | O Rappa | Reneé Rapp | Rita Lee | Miley Cyrus | Megan Thee Stallion | Jaloo | Legião Urbana | Taylor Swift | Aerosmith | OneRepublic | Ananda | Katy Perry | Little Mix | Katy Perry | Gal Costa | Iron Maiden | 5 Seconds Of Summer | Sabrina Carpenter | The Rolling Stones | Anahí | Beyoncé | Cazuza | Taylor Swift | Miley Cyrus | Niall Horan | Sabrina Carpenter | The Rolling Stones | The Doors | Tory Lanez | R.E.M. | Jorge Aragão | Jeff Buckley |
| Luísa Sonza | Katy Perry | Labrinth | TWICE | Peter Tosh | j-hope | Dua Lipa | Gabriel Froede | CPM 22 | Conan Gray | Cássia Eller | Little Mix | Doja Cat | Marina Sena | Biquini Cavadão | Reneé Rapp | Scorpions | Coldplay | Manu Gavassi | Little Mix | Lady Gaga | Britney Spears | Caetano Veloso | Ozzy Osbourne | Taylor Swift | Taylor Swift | Dire Straits | Dulce María | Britney Spears | Tim Maia | Tate McRae | Dua Lipa | Sam Smith | One Direction | John Lennon | The Who | Jr. Hi | The Cranberries | Grupo Fundo De Quintal | Blur |
| Pabllo Vittar | Camila Cabello | Lorde | LISA | Steel Pulse | Jungkook | Fifth Harmony | Marina Sena | Detonautas | Towa Bird | Lulu Santos | Selena Gomez | Flo Milli | Johnny Hooker | Ira! | Maisie Peters | KISS | Ed Sheeran | Lou Garcia | Shawn Mendes | Kesha | Miley Cyrus | Gilberto Gil | Megadeth | Louis Tomlinson | Conan Gray | Pink Floyd | Christian Chávez | Lady Gaga | Djavan | Madison Beer | Little Mix | James Arthur | Gracie Abrams | Paul McCartney | Jimi Hendrix | XO | The Cure | Beth Carvalho | Elliott Smith |
| Gloria Groove | Selena Gomez | Nessa Barrett | ITZY | Burning Spear | Monsta X | Sabrina Carpenter | Elana Dara | Raimundos | MUNA | Barão Vermelho | Katy Perry | Bree Runway | Potyguara Bardo | Os Paralamas do Sucesso | Sabrina Carpenter | Metallica | Bastille | Clarissa | Miley Cyrus | Miley Cyrus | Kesha | Ney Matogrosso | Slash | One Direction | Reneé Rapp | Bruce Springsteen | David Bisbal | Jennifer Lopez | Gilberto Gil | Selena Gomez | Camila Cabello | Alessia Cara | Shawn Mendes | The Doors | The Beatles | ZAYN | Lenny Kravitz | Arlindo Cruz | Pixies |
Com isso eu decidi criar um data frame a partir da matriz transposta da base inicial para corrigir o formato. A partir disso cada linha passou a corresponder a uma amostra (um artista) e cada coluna uma variável.
dadost <- as.data.frame(t(dados))
Além disso, renomeei as colunas:
names(dadost) <- c("artista", "correlacao_1", "correlacao_2", "correlacao_3", "correlacao_4",
"correlacao_5", "correlacao_6", "correlacao_7", "correlacao_8", "correlacao_9",
"correlacao_10", "correlacao_11", "correlacao_12", "correlacao_13",
"correlacao_14", "correlacao_15", "correlacao_16", "correlacao_17",
"correlacao_18", "correlacao_19", "correlacao_20")
Como pode-se ver abaixo o dado ficou organizado de modo que eu pudesse adicionar colunas com outros tipos de variáveis:
| artista | correlacao_1 | correlacao_2 | correlacao_3 | correlacao_4 | correlacao_5 | correlacao_6 | correlacao_7 | correlacao_8 | correlacao_9 | correlacao_10 | correlacao_11 | correlacao_12 | correlacao_13 | correlacao_14 | correlacao_15 | correlacao_16 | correlacao_17 | correlacao_18 | correlacao_19 | correlacao_20 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | Anitta | Lexa | Luísa Sonza | Pabllo Vittar | Gloria Groove | PEDRO SAMPAIO | DENNIS | Rebecca | Valesca Popozuda | DJ Tubarão | POCAH | ZAAC | Melody | Jerry Smith | MC Mirella | Tília | Gabily | Mc Kevinho | Hitmaker | Dream Team do Passinho | Lara Silva |
| X2 | Ariana Grande | Sabrina Carpenter | Katy Perry | Camila Cabello | Selena Gomez | Miley Cyrus | Madison Beer | Taylor Swift | Lady Gaga | Little Mix | Demi Lovato | Justin Bieber | Meghan Trainor | Fifth Harmony | Lizzo | Beyoncé | Raye | Zara Larsson | Alessia Cara | Carly Rae Jepsen | Dua Lipa |
| X3 | Billie Eilish | Lana Del Rey | Labrinth | Lorde | Nessa Barrett | FINNEAS | Conan Gray | Harry Styles | Madison Beer | Olivia Rodrigo | Jvke | sombr | Troye Sivan | Melanie Martinez | The Neighbourhood | AURORA | Taylor Swift | Sarah Cothran | Stephen Dawes | Ashe | Charlotte Lawrence |
| X4 | BLACKPINK | JENNIE | TWICE | LISA | ITZY | i-dle | aespa | Rosé | LE SSERAFIM | JEON SOMI | IVE | NAYEON | BABYMONSTER | Everglow | Hwa Sa | Red Velvet | JISOO | TAEYEON | XG | MAMAMOO | NMIXX |
| X5 | Bob Marley & The Wailers | Alpha Blondy | Peter Tosh | Steel Pulse | Burning Spear | Israel Vibration | Max Romeo | The Gladiators | Toots & The Maytals | Ziggy Marley | Clinton Fearon | Gregory Isaacs | Third World | Jimmy Cliff | Groundation | Black Uhuru | Eek-A-Mouse | UB40 | Horace Andy | Dennis Brown | Culture |
Depois isso, integrei a base que continha informações sobre dados de seguidores (insta.xlsx) e a que tinha dados sobre gênero musical e ouvintes (genouv.xlsx) usando leftjoin (mais indicado) ou simplesmente “imputando” uma base na outra.
setwd("/Users/marianalopes/Downloads")
insta <- read_excel("seguidores_instaR.xlsx", sheet = "Planilha1")
dadost$insta <- insta$insta
genouv <- read_excel("genero_ouvintes.xlsx", sheet = "Planilha1")
genouv <- genouv %>%
mutate(
artista = str_replace_all(artista, "\\s", " "),
artista = str_squish(artista)
)
dadost <- dadost %>%
left_join(
genouv %>% select(artista, gênero, `ouvintes mensais`),
by = "artista"
)
| artista | correlacao_1 | correlacao_2 | correlacao_3 | correlacao_4 | correlacao_5 | correlacao_6 | correlacao_7 | correlacao_8 | correlacao_9 | correlacao_10 | correlacao_11 | correlacao_12 | correlacao_13 | correlacao_14 | correlacao_15 | correlacao_16 | correlacao_17 | correlacao_18 | correlacao_19 | correlacao_20 | insta | gênero | ouvintes mensais |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Anitta | Lexa | Luísa Sonza | Pabllo Vittar | Gloria Groove | PEDRO SAMPAIO | DENNIS | Rebecca | Valesca Popozuda | DJ Tubarão | POCAH | ZAAC | Melody | Jerry Smith | MC Mirella | Tília | Gabily | Mc Kevinho | Hitmaker | Dream Team do Passinho | Lara Silva | 6.34e+07 | Pop | 35761973 |
| Ariana Grande | Sabrina Carpenter | Katy Perry | Camila Cabello | Selena Gomez | Miley Cyrus | Madison Beer | Taylor Swift | Lady Gaga | Little Mix | Demi Lovato | Justin Bieber | Meghan Trainor | Fifth Harmony | Lizzo | Beyoncé | Raye | Zara Larsson | Alessia Cara | Carly Rae Jepsen | Dua Lipa | 3.73e+08 | Pop | 80989301 |
| Billie Eilish | Lana Del Rey | Labrinth | Lorde | Nessa Barrett | FINNEAS | Conan Gray | Harry Styles | Madison Beer | Olivia Rodrigo | Jvke | sombr | Troye Sivan | Melanie Martinez | The Neighbourhood | AURORA | Taylor Swift | Sarah Cothran | Stephen Dawes | Ashe | Charlotte Lawrence | 1.24e+08 | Pop | 89363977 |
| BLACKPINK | JENNIE | TWICE | LISA | ITZY | i-dle | aespa | Rosé | LE SSERAFIM | JEON SOMI | IVE | NAYEON | BABYMONSTER | Everglow | Hwa Sa | Red Velvet | JISOO | TAEYEON | XG | MAMAMOO | NMIXX | 5.87e+07 | Pop | 30843379 |
| Bob Marley & The Wailers | Alpha Blondy | Peter Tosh | Steel Pulse | Burning Spear | Israel Vibration | Max Romeo | The Gladiators | Toots & The Maytals | Ziggy Marley | Clinton Fearon | Gregory Isaacs | Third World | Jimmy Cliff | Groundation | Black Uhuru | Eek-A-Mouse | UB40 | Horace Andy | Dennis Brown | Culture | NA | Reggae | 24226587 |
A minha ideia de grafo levava em consideração que os gestores do meu projeto na FGV são Homer Simpsons (com todo respeito, meu desenho favorito da infância). Por isso decidi deixar bastante didático visualmente, com diferentes tamanhos de nós conforme a quantidade de ouvintes mensais que o artista tem na plataforma e cores diferentes conforme o gênero musical. É mais fácil tomar uma decisão gerencial quando se entende um pouco do contexto por trás de cada dado. Usando um pouco de criatividade pode-se criar um gráfico que contenha mais dados embutidos, fornecendo mais informações a partir de diferentes cores e formatações.
Abaixo explico o que cada parte da formatação do grafo significa.
1) Edges: Foram criados os edges para representar as conexões entre artistas, partindo da primeira coluna da base como origem e das demais colunas como destinos. Em seguida, essas relações foram organizadas em uma tabela de arestas, com a remoção dos valores ausentes, e depois todos os nomes que apareciam como origem ou destino foram reunidos em uma lista única de artistas que compõem o grafo:
# 1) Edges
from <- dadost[[1]]
tos <- dadost[, 2:21]
edges <- data.frame(
from = rep(from, times = ncol(tos)),
to = unlist(tos, use.names = FALSE)
) %>%
filter(!is.na(to))
2) Lista de artistas: Foi criada uma lista completa de artistas a partir da união de todos que apareciam como origem e destino nas conexões, e em seguida foi utilizada a função unique( ) para garantir que cada artista aparecesse apenas uma vez nessa lista:
# 2) Lista de artistas
todos_artistas <- unique(c(edges$from, edges$to))
3) Nodes: Foram criados os nós para representar cada artista do grafo, organizados em um data frame com seus atributos. Primeiro, a lista completa de artistas foi associada às informações da base original (gênero e ouvintes mensais). Em seguida, os casos ausentes foram tratados: quando o gênero musical não estava definido, recebeu a categoria “Desconhecido”, e quando o número de ouvintes não existia, foi atribuído o valor padrão de 1000. Isso não distorceu as informações substanciais do grafo porque os únicos artistas que não continham esses dados eram os que faziam parte das colunas correlacao_1 a **correlacao_20*, portanto é até mesmo um modo interessante de verificar quais cantores não fazem parte da lista principal dos mais buscados na Universal Music Store. Por fim, foi definido um atributo extra chamado font_size, que ajusta o tamanho da fonte de acordo com a popularidade do artista — maior para quem tem mais de 90 milhões de ouvintes. Isso porque em circunferência maiores não há necessidade de manter a fonte tão pequena para visualizar o nome do artista, uma vez que nesse caso letras maiores não prejudicam a visibilidade dos nós da redondeza, como acontece no caso das circunferências muito pequenas:
# 3) Nodes com atributos
nodes <- data.frame(name = todos_artistas) %>%
left_join(
dadost %>% select(artista, gênero, `ouvintes mensais`),
by = c("name" = "artista")
) %>%
mutate(
gênero = ifelse(is.na(gênero), "Desconhecido", gênero),
`ouvintes mensais` = ifelse(is.na(`ouvintes mensais`), 1000, `ouvintes mensais`),
font_size = ifelse(`ouvintes mensais` > 9.0e+07, 3, 2.2)
)
4) Grafo inicial: O grafo inicial é criado para estruturar a rede básica de conexões entre os artistas, utilizando as arestas e os nós já preparados. Esse passo serve como uma primeira representação da rede, que permite verificar se os dados foram corretamente organizados e se o grafo está funcional. Ele é um ponto de partida geral, enquanto as recriações permitem gerar versões mais específicas e refinadas conforme a análise desejada:
# 4) Grafo inicial
g <- graph_from_data_frame(edges, vertices = nodes, directed = FALSE)
5) Paleta: Foi definida uma paleta de cores para identificar os gêneros musicais no grafo conforme a estética da Universal Music, atribuindo uma cor específica a cada estilo e agrupando gêneros semelhantes com a mesma tonalidade:
# 5) Paleta
paleta <- c(
"Pop" = "#8E44AD", # roxo
"Rock" = "#2C3E99", # azul escuro
"Heavy metal" = "#2C3E99", # azul escuro
"Funk" = "#991232", # vermelho marsala
"MPB & Samba" = "#991232", # vermelho marsala
"MPB" = "#991232", # vermelho marsala
"Reggae" = "#2980B9", # azul céu
"R&B" = "#2e9995", # verde água
"Hip hop" = "#2e9995", # verde água
"Desconhecido"= "#F4D03F" # amarelo
)
6) Pesos das arestas: Foram atribuídos pesos às arestas do grafo para controlar a força das conexões. As ligações entre artistas de gênero Pop com outros também Pop receberam um peso extremamente baixo tornando-as muito mais fracas, enquanto todas as demais conexões mantiveram peso igual a 1. O motivo disso foi porque os artistas Pop tinham circunferências de nós grandes e em geral eram muito correlacionados entre si (várias conexões em comum). Isso fazia com que os nós ficassem muito próximos, o que causava confusão e pouca legibilidade ou interpretabilidade do grafo:
# 6) Pesos das arestas
edges <- edges %>%
left_join(nodes %>% select(name, gênero), by = c("from" = "name")) %>%
rename(gen_from = gênero) %>%
left_join(nodes %>% select(name, gênero), by = c("to" = "name")) %>%
rename(gen_to = gênero) %>%
mutate(weight = ifelse(gen_from == "Pop" & gen_to == "Pop", 0.000000000000000000000001, 1))
7) Recriar grafo: O grafo foi recriado incorporando agora os pesos definidos nas arestas, de modo que as conexões entre os artistas passem a refletir não apenas a existência da relação, mas também a intensidade dela:
# 7) Recriar grafo
g <- graph_from_data_frame(edges %>% select(from, to, weight), vertices = nodes, directed = FALSE)
8) Layout: Foi definido um layout para posicionar os artistas no grafo, controlando o afastamento entre eles de acordo com o número de nós, os pesos das conexões e um parâmetro de repulsão que evita sobreposição:
# 8) Layout
set.seed(123)
afastamento <- 2
coords <- layout_with_fr(
g,
niter = 15000,
area = vcount(g)^4 * afastamento,
repulserad = vcount(g)^4 * afastamento,
weights = E(g)$weight
)
## Warning: The `area` argument of `layout_with_fr()` is deprecated as of igraph 0.8.0.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## Warning: The `repulserad` argument of `layout_with_fr()` is deprecated as of igraph
## 0.8.0.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
9) Plot: Foi feito o plot do grafo utilizando as coordenadas já definidas. As conexões foram desenhadas em laranja, enquanto cada artista aparece como um ponto cujo tamanho reflete o número de ouvintes mensais e cuja cor indica o gênero, conforme a paleta criada. Os nomes dos artistas foram adicionados em fonte preta, e o gráfico foi formatado com tema limpo e legenda posicionada na parte inferior:
# 9) Plot
ggraph(g, layout = "manual", x = coords[,1], y = coords[,2]) +
geom_edge_link(colour = "orange", alpha = 0.8) +
geom_node_point(aes(size = `ouvintes mensais`, fill = gênero),
shape = 21, stroke = 0) +
geom_node_text(aes(label = name),
size = 2.2, color = "black", repel = FALSE) + # fonte sempre preta
scale_size_continuous(range = c(6, 24)) +
scale_fill_manual(values = paleta) +
theme_void() +
theme(legend.position = "bottom")
OBS.: Para melhor visualização do grafo recomendo baixar o arquivo disponível na pasta “/grafo” no repositório.
O grafo mostra as diferentes correlações entre artistas. É interessante perceber que existem nós em comum e que assim como alguns artistas principais estão correlados entre si diretamente, existem casos nos quais artistas/nós intermediários ligam diferentes artistas principais. Além disso, podemos ver que existe um padrão de gênero musical na correlação. Por exemplo, todos os artistas de R&B são correlacionados com os de pop internacional. Outros padrões foram levadas em consideração para formar os Clusters 1, 2 e 3, cujos gráficos de barras de seguidores no Instagram são analisados na próxima seção.
É nessa seção que serão comparados os números de seguidores de cada artista no Instagram conforme o agrupamento feito de maneira exploratória a partir do grafo anterior. O principal critério de decisão foi as ligações entre os nós e de maneira secundária foi levado em conta o gênero musical de cada artista. Isso é relevante porque pode-se estimar o custo de patrocínio de cada artista em suas redes. A partir disso, entendendo quais artistas são mais correlacionados entre si, é possível encontrar métodos indiretos de atingir públicos maiores e, assim, aumentar o interesse do público pelos produtos da Universal e impulsionar as vendas no e-commerce.
Cluster 1: É o grupo composto de artistas pop internacionais e todos os R&B da base. Quando se analisa o grafo anterior esse é o cluster mais nítido pois todos os artistas estão correlacionados entre si de alguma maneira.
O interessante desse cluster é que ele possui uma banda de rock (“Imagine Dragons”) que não tem correlação com nenhuma outra banda do mesmo gênero mas que curiosamente tem algumas diferentes correlações com artistas Pop. Nisso vemos que o comportamento do consumidor não varia apenas com base em gênero mas também conforme outros fatores que influenciam suas percepções.
cluster1 <- dadost %>% filter(artista %in% c("Ariana Grande", "Billie Eilish", "Camila Cabello",
"Chappell Roan", "Demi Lovato", "Doechii",
"Gracie Abrams", "Imagine Dragons", "Justin Bieber",
"Katy Perry", "Lady Gaga", "Niall Horan",
"Olivia Rodrigo", "Rihanna", "Sabrina Carpenter",
"Selena Gomez", "Shawn Mendes", "Taylor Swift",
"The Weeknd"))
ggplot(cluster1, aes(x = reorder(artista, -insta), y = `insta`, fill = gênero)) +
geom_col() +
scale_fill_manual(values = paleta) +
theme_minimal() +
labs(x = "artista", y = "seguidores instagram", fill = "gêneros") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
A interpretação gerencial é que, se caso seja concluído que o público que consome o conteúdo artístico e midiático desses artistas é suscetível a campanhas de marketing no Instagram, por exemplo, seria recomendado investir em “publis” nos perfis da Gracie Abrams, da Doechii ou Chappell Roan. Isso porque essas são as artistas que possuem menos seguidores na rede logo são mais baratas de custear campanhas e ainda assim públicos de artistas maiores seriam atingidos. Para a decisão final deveria-se analisar mais aprofundamente quais das três artistas têm mais influência e poder de convencimento no Instagram.
Cluster 2: É o grupo composto de artistas que em sua maioria não são correlacionados entre si mas que fazem parte do mesmo gênero musical.
cluster2 <- dadost %>% filter(artista %in% c("Anitta", "BLACKPINK", "BTS", "Carol Biazin",
"DUDA BEAT", "Jão", "RBD"))
ggplot(cluster2, aes(x = reorder(artista, -insta), y = `insta`, fill = gênero)) +
geom_col() +
scale_fill_manual(values = paleta) +
theme_minimal() +
labs(x = "artista", y = "seguidores instagram", fill = "gêneros") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Nesse caso já que nem todos os artistas não são correlacionados entre si mesmo que façam parte do mesmo gênero Pop, deveria-se focar nos com menor seguidores (= menor custo para campanha) que têm correlação com artistas grandes. A única artista grande desse grupo que tem correlação com outros do cluster é a Anitta e esses cantores menores interessantes para uma campanha seriam Duda Beat, Carol Biazin. O Jão apesar de provavelmente ser barato de custear ele não tem uma correlação direta com a Anitta, apenas indireta, diferentemente das outras contoras.
Cluster 3: Esse é o cluster do rock (com exceção de Imagine Dragons), do MPB, do Pagode/Samba e do Reggae. Gêneros que parecem não fazer sentido entre si mas que quando analisadas as datas do auge dos artistas e o local de sucesso faz bastante sentido. Esse cluster na realidade une 2 grupos e 2 artistas isolados: um grupo de rock brasileiro e MPB, outro de rock internacional e heavy metal, um artista de pagode/samba que não tem correlações (Zeca Pagodinho) e um de Reggae (Bob Marley). Idealmente esse deveria ser dividido em mais de um cluster mas priorizei a simplificação de análise já que esses sub grupos compartilham similaridade da faixa etária do público que consome e também gêneros similares.
cluster3 <- dadost %>% filter(artista %in% c("Bob Marley & The Wailers", "Charlie Brown Jr.",
"Cazuza", "Engenheiros do Hawaii", "Guns N' Roses",
"Maria Bethânia", "Metallica", "Queen", "Rita Lee",
"The Beatles", "The Rolling Stones", "U2",
"Zeca Pagodinho"))
ggplot(cluster3, aes(x = reorder(artista, -insta), y = `insta`, fill = gênero)) +
geom_col() +
scale_fill_manual(values = paleta) +
theme_minimal() +
labs(x = "artista", y = "seguidores instagram", fill = "gêneros") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
## Warning: Removed 3 rows containing missing values or values outside the scale range
## (`geom_col()`).
Levando em conta o conhecimento da Universal quanto ao seu público, sabe-se que as pessoas que consomem as músicas dos artistas desse cluster não são as mais suscetíveis a campanham em mídias sociais, caracteríticas mais atribuídas aos Millenials e Gen Z. Portanto, a recomendação gerencial nesse caso seria a de não investir em campanhas no Instagram desses artistas. Levando em conta o gráfico anterior, de qualquer maneira seria difícil escolher qual artista patrocinar pois os dois subgrupos são bem distintos em questão de tamanho no Instagram, o que significa que não seria possível atingir os artistas maiores com algum artista menor e mais barato pois nesse caso eles não estão correlacionados.
O Chat GPT foi consultado em duas partes principais:
1- Formatação do grafo e dos gráficos em relação a cores dos nós e das
barras, cores e tamanho das fontes das letras e tamanho dos nós.
2- Extração dos dados da Deezer API. Ele me ensinou a usar a plataforma, fez o código e me ensinou a colocar em prática.